package com.wuba.rxjavademo.lyz.day0505;

import com.wuba.rxjavademo.lyz.BaseDemo;

import java.util.concurrent.TimeUnit;

import rx.Observable;
import rx.Subscription;

/**
 * Created by liyaxing on 2016/5/12.
 */
public class Demo05 extends BaseDemo {

    public static void main(String[]ss){
//        Observable.create(subscriber -> {
//            throw new NullPointerException() ;
//        }).doOnNext(new Action1<Object>() {
//            @Override
//            public void call(Object o) {
//                print("asdfasdfsafd");
//            }
//        }).subscribe(new Subscriber<Object>() {
//
//            @Override
//            public void onNext(Object o) {
//
//            }
//
//            @Override
//            public void onCompleted() {
//
//            }
//
//            @Override
//            public void onError(Throwable e) {
//                print("----------------");
//            }
//        }) ;
//        Observable.<String>create(subscriber -> {}) ;
//        Observable.mergeDelayError(Observable.just(1),Observable.just(1),Observable.just(1),Observable.create(subscriber -> {
//            throw new NullPointerException() ;
//        })).toList().subscribe(new Subscriber<List<Integer>>() {
//            @Override
//            public void onCompleted() {
//
//            }
//
//            @Override
//            public void onError(Throwable e) {
//
//            }
//
//            @Override
//            public void onNext(List<Integer> integers) {
//                print(integers);
//            }
//        }) ;
//        try {
//            Thread.sleep(1000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }


        Observable observable = Observable.interval(1, TimeUnit.SECONDS) ;
        Subscription subscription =
                observable.subscribe(l->{print(l + " ：" + Thread.currentThread().getName());}) ;
        subscription.unsubscribe();

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        subscription.unsubscribe();

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        for (int i = 0; i < 20; i++) {
            observable.subscribe(l->{print(l + " ：" + Thread.currentThread().getName());}) ;
        }


        try {
            Thread.sleep(30000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }


}
